import pytest
import os
from threading import Thread
from multiprocessing import Process
from Tools.delete_result import *
import time
from Tools.common_params_deal import *


def create_report():
    # 生成测试报告
    os.system('allure generate  ./result/ -o ./report/ --clean')
    # .gitignore 文件添加到测试报告当中
    os.system(r'copy .\Log\error_log\.gitignore .\report\.gitignore')


class CaseRunning(Process):
    def __init__(self, case_file):
        super(CaseRunning, self).__init__()
        self.case_file = case_file

    def run(self) -> None:
        run_web(self.case_file)


# 用例执行入口 --reruns=3 --reruns-delay=2
def run_web(case_file):
    # 执行测试用例
    pytest.main(['--reruns=2', '--reruns-delay=1', f'{case_file}', '--alluredir', './result'])


if __name__ == '__main__':
    # 创建事件流程
    create_flow()
    # 执行前先删除测试报告文件当中的内容
    delete_result()
    # 开启第一个进程 执行01下用例
    process1 = CaseRunning('./Testcase_01')
    process1.start()
    # 开启第二个进程 执行02下用例
    process2 = CaseRunning('./Testcase_02')
    process2.start()
    # 等待进程2执行完毕 再执行主进程
    process2.join()
    # 判断进程2是不是存活
    if process1.is_alive():
        process1.join()
        create_report()
    else:
        create_report()
    # 删除测试数据
    # delete_test_data()
